﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
using System.Data;

namespace Data
{
    public class ReportesDataAccess
    {
        private SQLiteConnection con = DataBaseHelper.GetConnection("BDHostal.sqlite");
        private bool exitoRegistrar;
        private DataTable dt = new DataTable();
        private DataSet dataSet = new DataSet();

        public DataTable buscarHospedajesExitosos()
        {
            string cmd = "SELECT DISTINCT * FROM hospedajesExitosos";
            {
                try
                {
                    con.Open();
                    SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(cmd, con);
                    dataSet.Reset();
                    dataAdapter.Fill(dataSet);
                    dt = dataSet.Tables[0];
                }
                catch (SystemException ex) { }
                finally
                {
                    con.Close();
                }
            }
            return dt;
        }

        public DataTable buscarReservasExitosas()
        {
            string cmd = "SELECT numeroHabitacion,numeroDocumento,fechaLlegada,fechaSalida,fechaRegistro FROM reservas WHERE fechaLlegada || numeroDocumento || numeroHabitacion NOT IN (SELECT fechaLlegada || numeroDocumento || numeroHabitacion  FROM reservasCanceladas)";
            {
                try
                {
                    con.Open();
                    SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(cmd, con);
                    dataSet.Reset();
                    dataAdapter.Fill(dataSet);
                    dt = dataSet.Tables[0];
                }
                catch (SystemException ex) { }
                finally
                {
                    con.Close();
                }
            }
            return dt;
        }

        public DataTable buscarHospedajesExitosos(string fechaLlegada, string fechaSalida)
        {
            string cmd = "SELECT DISTINCT * FROM hospedajesExitosos WHERE ('" + fechaLlegada + "' BETWEEN fechaLlegada AND fechaSalida) OR ('" + fechaSalida + "' BETWEEN fechaLlegada AND fechaSalida) OR (fechaLlegada BETWEEN '" + fechaLlegada + "' AND '" + fechaSalida + "') OR (fechaSalida BETWEEN '" + fechaLlegada + "' AND '" + fechaSalida + "')";
            {
                try
                {
                    con.Open();
                    SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(cmd, con);
                    dataSet.Reset();
                    dataAdapter.Fill(dataSet);
                    dt = dataSet.Tables[0];
                }
                catch (SystemException ex) { }
                finally
                {
                    con.Close();
                }
            }
            return dt;
        }

        public DataTable buscarReservasExitosas(string fechaLlegada, string fechaSalida)
        {
            string parcial = "SELECT fechaLlegada || numeroDocumento || numeroHabitacion FROM reservas WHERE  ('" + fechaLlegada + "' BETWEEN fechaLlegada AND fechaSalida) OR ('" + fechaSalida + "' BETWEEN fechaLlegada AND fechaSalida) OR (fechaLlegada BETWEEN '" + fechaLlegada + "' AND '" + fechaSalida + "') OR (fechaSalida BETWEEN '" + fechaLlegada + "' AND '" + fechaSalida + "')";
            string cmd = "SELECT numeroHabitacion,numeroDocumento,fechaLlegada,fechaSalida,fechaRegistro FROM reservas WHERE (fechaLlegada || numeroDocumento || numeroHabitacion NOT IN (select fechaLlegada || numeroDocumento || numeroHabitacion  FROM reservasCanceladas)) AND (fechaLlegada || numeroDocumento || numeroHabitacion IN (" + parcial + "))";
            {
                try
                {
                    con.Open();
                    SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(cmd, con);
                    dataSet.Reset();
                    dataAdapter.Fill(dataSet);
                    dt = dataSet.Tables[0];
                }
                catch (SystemException ex) { }
                finally
                {
                    con.Close();
                }
            }
            return dt;
        }
    }
}
